Sparse Matrix Representation Using a Boundary of Non-Zero Coefficients

ABSTRACT

A sparse matrix representation of image or video data for encoding or decoding uses a boundary of non-zero coefficients within the image or video data. A bounding box encloses each non-zero coefficient within an image or video block. The coefficients enclosed within the bounding box are encoded to a bitstream along with dimensional information usable to identify the bounding box within the image or video block during decoding. Coefficients not enclosed within the bounding box are not specifically encoded within the bitstream. The dimensional information represents one or more of a shape, size, or position within the image or video block of the bounding box. The bounding box may be identified according to a scan order used to process the coefficients within the image or video block. The bounding box may be rectangular or non-rectangular.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This disclosure is a continuation of U.S. patent application Ser. No.16/726,408, filed Dec. 24, 2019, which claims the benefit of U.S.Provisional Application Ser. No. 62/924,108, filed Oct. 21, 2019, thedisclosures of which are hereby incorporated by reference in theirentirety.

BACKGROUND

Image content represents a significant amount of online content. A webpage may include multiple images, and a large portion of the time andresources spent rendering the web page are dedicated to rendering thoseimages for display. The amount of time and resources required to receiveand render an image for display depends in part on the manner in whichthe image is encoded. As such, an image, and therefore a web page thatincludes the image, can be rendered faster by reducing the total datasize of the image. Various approaches have been proposed to reduce thetotal data size of images, including encoding or decoding techniques.

Digital video streams may represent video using a sequence of frames orstill images. Digital video can be used for various applicationsincluding, for example, video conferencing, high definition videoentertainment, video advertisements, or sharing of user-generatedvideos. A digital video stream can contain a large amount of data andconsume a significant amount of computing or communication resources ofa computing device for processing, transmission, or storage of the videodata. Various approaches have been proposed to reduce the amount of datain video streams, including encoding or decoding techniques.

SUMMARY

Disclosed herein are, inter alia, systems and techniques for image orvideo coding using sparse matrix representation using a boundary ofnon-zero coefficients.

A method for encoding an image block according to an implementation ofthis disclosure includes: transforming data of the image block toproduce transformed image data; quantizing the transformed image data toproduce quantized image data, wherein the quantized image data includescoefficients arranged in a two-dimensional matrix; identifying abounding box which encloses non-zero value coefficients of the quantizedimage data within the two-dimensional matrix, wherein zero valuecoefficients of the quantized image data are located outside of thebounding box within the two-dimensional matrix; entropy encoding thenon-zero value coefficients enclosed within the bounding box to anencoded bitstream; and including dimensional information of the boundingbox in the encoded bitstream.

A method for decoding an encoded image block according to animplementation of this disclosure includes: decoding dimensionalinformation of a bounding box from an encoded bitstream including theencode image block; decoding syntax elements representative of theencoded image block from an encoded bitstream using the dimensionalinformation, wherein the syntax elements correspond to non-zero valuecoefficients of image data enclosed within the bounding box during anencoding of the image data, wherein the syntax elements are arrangedother than in a two-dimensional matrix format; dequantizing the syntaxelements to produce transformed image data, wherein the transformedimage data includes coefficients arranged in a two-dimensional matrix;inverse transforming the transformed image data to produce decoded imagedata; and outputting the decoded image data for storage or display.

A method for encoding a video block according to an implementation ofthis disclosure includes: generating a prediction block for data of thevideo block; producing a prediction residual for the data of the videoblock using the prediction block; transforming the prediction residualto produce transform coefficients; quantizing the transform coefficientsto produce quantized transform coefficients, wherein the quantizedtransform coefficients are arranged in a two-dimensional matrix;identifying a bounding box which encloses non-zero value coefficients ofthe quantized transform coefficients within the two-dimensional matrix,wherein zero value coefficients of the quantized transform coefficientsare located outside of the bounding box within the two-dimensionalmatrix; entropy encoding the non-zero value coefficients enclosed withinthe bounding box to an encoded bitstream; and including dimensionalinformation of the bounding box in the encoded bitstream.

A method for decoding an encoded video block according to animplementation of this disclosure includes: decoding dimensionalinformation of a bounding box from an encoded bitstream including theencode image block; decoding syntax elements representative of theencoded video block from an encoded bitstream using the dimensionalinformation, wherein the syntax elements correspond to non-zero valuecoefficients of video data enclosed within the bounding box during anencoding of the video data, wherein the syntax elements are arrangedother than in a two-dimensional matrix format; dequantizing the syntaxelements to produce transform coefficients, wherein the transformcoefficients include coefficients arranged in a two-dimensional matrix;inverse transforming the transform coefficients to produce a predictionresidual; reconstructing the prediction residual to produce a decodedvideo block; and outputting the decoded video block for storage ordisplay.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure is best understood from the following detaileddescription when read in conjunction with the accompanying drawings. Itis emphasized that, according to common practice, the various featuresof the drawings are not to scale. On the contrary, the dimensions of thevarious features are arbitrarily expanded or reduced for clarity.

FIG. 1 is a block diagram of an example of an image or video codingsystem.

FIG. 2 is a block diagram of an example of an internal configuration ofa computing device that can be used in an image or video coding system.

FIG. 3 is a diagram of an example of an image to be encoded andsubsequently decoded.

FIG. 4 is a diagram of an example of a video stream to be encoded andsubsequently decoded.

FIG. 5 is a block diagram of an example of an image encoder.

FIG. 6 is a block diagram of an example of an image decoder.

FIG. 7 is a block diagram of an example of a video encoder.

FIG. 8 is a block diagram of an example of a video decoder.

FIG. 9 is an illustration of examples of portions of an image or videoframe.

FIGS. 10-11 are illustrations of examples of a sparse matrixrepresentation of an image or video block using a boundary of non-zerocoefficients.

FIG. 12 is a flowchart diagram of an example of a technique for encodingan image or video block using sparse matrix representation using aboundary of non-zero coefficients.

FIG. 13 is a flowchart diagram of an example of a technique for decodingan encoded image or video block using sparse matrix representation usinga boundary of non-zero coefficients.

DETAILED DESCRIPTION

Image and video compression schemes include breaking respective imagesor video frames into smaller portions, such as blocks, and generating anoutput bitstream using techniques to limit the information included forrespective blocks in the output. An encoded bitstream can be decoded tore-create the source images or video frames from the limitedinformation. Image or video data to be encoded to an encoded bitstream,or following decoding from an encoded bitstream, is typically expressedusing coefficients arranged in a two-dimensional matrix format. In atleast some cases, the two-dimensional matrix of the coefficients mayinclude some number of zero value coefficients. In many such cases, thezero value coefficients may be found along the top and/or bottomportions of the two-dimensional matrix.

Zero value coefficients typically do not indicate important informationand thus may not be signaled, such as within an encoded bitstream. Assuch, compression efficiency may be improved by skipping at least somezero value coefficients. However, the particular arrangement of zerovalue coefficients may not be efficient for transmission within atwo-dimensional matrix structure. For example, in situations in whichthe zero value coefficients are not grouped together, the zero valuecoefficients may be encoded to and subsequently decoded from an encodedbitstream, such as because it would be difficult or resource intensiveto otherwise isolate only the non-zero coefficients.

Conventional approaches to improving transmission efficiency in thisregard include transforming the two-dimensional matrix into aone-dimensional signal using a scan order pattern, such as raster order,zig zag order, or the like. However, in at least some cases, the scanorder pattern may still not effectively enough group zero valuecoefficients and may therefore result in many zero value coefficientsbeing encoded. Furthermore, the use of a scan order pattern alone toidentify a location of a last non-zero coefficient according to the scanorder pattern may require additional data to be signaled within theencoded bitstream, such as an end of block (EOB) message indicating thelocation of that last non-zero coefficient.

Implementations of this disclosure address problems such as these usingsparse matrix representations of image or video data using a boundary ofnon-zero coefficients. A two-dimensional matrix representation of imageor video frame data, such as data corresponding to a block of the imageor video frame, is processed by identifying a bounding box for thenon-zero coefficients of the block. The bounding box may have arectangular shape. Alternatively, the bounding box may have anon-rectangular shape. For example, the bounding box may have agenerally convex or concave shape on one or more sides. In anotherexample, the bounding box may have a shape corresponding to a triangle,circle, rhombus, or other geometric structure. The coefficients locatedwithin the bounding box are encoded to an encoded bitstream, along withinformation usable by a decoder to identify the shape and/or location ofthe bounding box within the block during decoding. As such, coefficientslocated outside of the bounding box are not encoded to an encodedbitstream, thereby improving compression and computational efficiency.

Further details of techniques for image or video coding using sparsematrix representation using a boundary of non-zero coefficients aredescribed herein with initial reference to a system in which suchtechniques can be implemented. FIG. 1 is a diagram of an example of animage or video coding system 100. The image or video coding system 100includes a transmitting station 102, a receiving station 104, and anetwork 106. The image or video coding system 100 can be used, forexample, to encode and decode some or all of an image or a videosequence.

The transmitting station 102 is a computing device that encodes andtransmits an image. Alternatively, the transmitting station 102 mayinclude two or more distributed devices for encoding and transmitting animage or a video sequence. The receiving station 104 is a computingdevice that receives and decodes an encoded image or an encoded video.Alternatively, the receiving station 104 may include two or moredistributed devices for receiving and decoding an encoded image or anencoded video. An example of a computing device used to implement one orboth of the transmitting station 102 or the receiving station 104 isdescribed below with respect to FIG. 2.

The network 106 connects the transmitting station 102 and the receivingstation 104 for the encoding, transmission, receipt, and decoding of animage. The network 106 can be, for example, the Internet. The network106 can also be a local area network (LAN), a wide area network (WAN), avirtual private network (VPN), a cellular telephone network, or anothermeans of transferring the image from the transmitting station 102 to thereceiving station 104.

Implementations of the coding system 100 may differ from what is shownand described with respect to FIG. 1. In some implementations, the imageor video coding system 100 can omit the network 106. In someimplementations, an image or a video stream can be encoded and thenstored for transmission at a later time to the receiving station 104 oranother device having memory. In some implementations, the receivingstation 104 can receive (e.g., via the network 106, a computer bus,and/or some communication pathway) the encoded image or encoded videoand store the encoded image or encoded video for later decoding. Forexample, a real-time transport protocol (RTP), a Hypertext TransferProtocol-based (HTTP-based) video streaming protocol, or anotherprotocol may be used for transmission of the encoded image or encodedvideo over the network 104.

In some implementations, the image or video coding system 100 may beused in a video conferencing system. For example, the transmittingstation 102 and/or the receiving station 106 may include the ability toboth encode and decode a video stream as described below. For example,the receiving station 106 could be a video conference device of aparticipant who receives an encoded video bitstream from a videoconference server (e.g., the transmitting station 102) to decode andview and further encodes and transmits a video bitstream to the videoconference server for decoding and viewing by other participants.

In some implementations, the functionality of the transmitting station102 and of the receiving station 104 can change based on the particularoperations performed. For example, during operations for encoding animage or video stream, the transmitting station 102 can be a computingdevice used to upload an image or video stream for encoding to a server,and the receiving station 104 can be the server that receives the imageor video stream from the transmitting station 102 and encodes the imageor video stream for later use. In another example, during operations fordecoding an encoded image or encoded video, the transmitting station 102can be a server that decodes the encoded image or encoded video, and thereceiving station 104 can be a computing device that receives thedecoded image or decoded video from the transmitting station 102 andrenders the decoded image or decoded video.

FIG. 2 is a block diagram of an example of an internal configuration ofa computing device 200 that can be used in an image encoding anddecoding system, for example, the image coding system 100 shown inFIG. 1. The computing device 200 may, for example, implement one or bothof the transmitting station 102 or the receiving station 104. Thecomputing device 200 can be in the form of a computing system includingmultiple computing devices, or in the form of one computing device, forexample, a mobile phone, a tablet computer, a laptop computer, anotebook computer, a desktop computer, or the like.

A processor 202 in the computing device 200 can be a conventionalcentral processing unit. Alternatively, the processor 202 can be anothertype of device, or multiple devices, now existing or hereafterdeveloped, capable of manipulating or processing information. Forexample, although the disclosed implementations can be practiced withone processor as shown (e.g., the processor 202), advantages in speedand efficiency can be achieved by using more than one processor.

A memory 204 in the computing device 200 can be a read-only memory (ROM)device or a random-access memory (RAM) device in an implementation.However, other suitable types of storage devices can be used as thememory 204. The memory 204 can include code and data 206 that isaccessed by the processor 202 using a bus 212. The memory 204 canfurther include an operating system 208 and application programs 210,the application programs 210 including at least one program that permitsthe processor 202 to perform the techniques described herein. Forexample, the application programs 210 can include applications 1 throughN, which further include image or video encoding and/or decodingsoftware that performs some or all of the techniques described herein.The computing device 200 can also include a secondary storage 214, whichcan, for example, be a memory card used with a mobile computing device.For example, an image can be stored in whole or in part in the secondarystorage 214 and loaded into the memory 204 as needed for processing.

The computing device 200 can also include one or more output devices,such as a display 218. The display 218 may be, in one example, atouch-sensitive display that combines a display with a touch-sensitiveelement that is operable to sense touch inputs. The display 218 can becoupled to the processor 202 via the bus 212. Other output devices thatpermit a user to program or otherwise use the computing device 200 canbe provided in addition to or as an alternative to the display 218. Whenthe output device is or includes a display, the display can beimplemented in various ways, including as a liquid crystal display(LCD), a cathode-ray tube (CRT) display, or a light emitting diode (LED)display, such as an organic LED (OLED) display.

The computing device 200 can also include or be in communication with animage-sensing device 220, for example, a camera, or anotherimage-sensing device, now existing or hereafter developed, which cansense an image such as the image of a user operating the computingdevice 200. The image-sensing device 220 can be positioned such that itis directed toward the user operating the computing device 200. Forexample, the position and optical axis of the image-sensing device 220can be configured such that the field of vision includes an area that isdirectly adjacent to the display 218 and from which the display 218 isvisible.

The computing device 200 can also include or be in communication with asound-sensing device 222, for example, a microphone or anothersound-sensing device, now existing or hereafter developed, which cansense sounds near the computing device 200. The sound-sensing device 222can be positioned such that it is directed toward the user operating thecomputing device 200 and can be configured to receive sounds, forexample, speech or other utterances, made by the user while the useroperates the computing device 200.

Implementations of the computing device 200 may differ from what isshown and described with respect to FIG. 2. In some implementations, theoperations of the processor 202 can be distributed across multiplemachines (wherein individual machines can have one or more processors)that can be coupled directly or across a local area or other network. Insome implementations, the memory 204 can be distributed across multiplemachines, such as a network-based memory or memory in multiple machinesperforming the operations of the computing device 200. In someimplementations, the bus 212 of the computing device 200 can be composedof multiple buses. In some implementations, the secondary storage 214can be directly coupled to the other components of the computing device200 or can be accessed via a network and can comprise an integratedunit, such as a memory card, or multiple units, such as multiple memorycards.

FIG. 3 is a diagram of an example of an image 300 to be encoded andsubsequently decoded. The image 300 can be divided into a series ofplanes or segments 302. The segments 302 can be subsets of images thatpermit parallel processing, for example. The segments 302 can also orinstead be subsets of images that can separate the image data intoseparate colors. For example, the image 300 color video data can includea luminance plane and two chrominance planes. The segments 302 may besampled at different resolutions.

Whether or not the frame 300 is divided into segments 302, the image 300may be further subdivided into blocks 304, which can contain datacorresponding to, for example, 16×16 pixels in the image 300. The blocks304 can also be arranged to include data from one or more segments 302of pixel data. The blocks 304 can also be of any other suitable sizesuch as 4×4 pixels, 8×8 pixels, 16×8 pixels, 8×16 pixels, 16×16 pixels,or larger. Unless otherwise noted, the terms block and macroblock areused interchangeably herein.

FIG. 4 is a diagram of an example of a video stream 400 to be encodedand subsequently decoded. The video stream 400 includes a video sequence402. At the next level, the video sequence 402 includes a number ofadjacent frames 404. While three frames are depicted as the adjacentframes 404, the video sequence 402 can include any number of adjacentframes 404. The adjacent frames 404 can then be further subdivided intoindividual frames, for example, a frame 406.

At the next level, the frame 406 can be divided into a series of planesor segments 408. The segments 408 can be subsets of frames that permitparallel processing, for example. The segments 408 can also be subsetsof frames that can separate the video data into separate colors. Forexample, a frame 406 of color video data can include a luminance planeand two chrominance planes. The segments 408 may be sampled at differentresolutions.

Whether or not the frame 406 is divided into segments 408, the frame 406may be further subdivided into blocks 410, which can contain datacorresponding to, for example, 16×16 pixels in the frame 406. The blocks410 can also be arranged to include data from one or more segments 408of pixel data. The blocks 410 can also be of any other suitable sizesuch as 4×4 pixels, 8×8 pixels, 16×8 pixels, 8×16 pixels, 16×16 pixels,or larger. Unless otherwise noted, the terms block and macroblock areused interchangeably herein.

FIG. 5 is a block diagram of an example of an image encoder 500. FIG. 3is a block diagram of an example of an image encoder 500. The imageencoder 500 may, for example, be an image decoder implemented at atransmitting station of an image coding system, such as the transmittingstation 102 of the image coding system 100 shown in FIG. 1. The imageencoder 500 receives and encodes an input image 502 (e.g., the image 300shown in FIG. 3) to produce an encoded image 504, which may be output toa decoder (e.g., implemented by a receiving station, such as thereceiving station 104 shown in FIG. 1) or for storage.

The image encoder 500 includes a transform stage 506, a quantizationstage 508, and an entropy encoding stage 510. The transform stage 506transforms blocks of the input image 502 into the frequency domain. Forexample, the transform stage 506 can use a discrete cosine transform(DCT) to transform the blocks of the input image 502 from the spatialdomain to the frequency domain. Alternatively, the transform stage 506can use another Fourier-related transform or a discrete Fouriertransform to transform the blocks of the input image 502 from thespatial domain to the frequency domain. As a further alternative, thetransform stage 506 can use another block-based transform to transformthe blocks of the input image 502 from the spatial domain to thefrequency domain.

The quantization stage 508 quantizes transform coefficients produced asoutput by the transform stage 506. The quantization stage 508 convertsthe transform coefficients into discrete quantum values, which arereferred to as quantized transform coefficients, using a quantizationfactor. For example, the transform coefficients may be divided by thequantization factor and truncated.

The entropy encoding stage 510 entropy encodes the quantized transformcoefficients output from the quantization stage 508 using a lossy orlossless coding technique. For example, the lossless coding techniqueused by the entropy encoding stage 510 to entropy encode the quantizedtransform coefficients may be or include Huffman coding, arithmeticdoing, variable length coding, or another coding technique. The encodedimage 504 is produced based on the output of the entropy encoding stage510. The encoded image 504 may be stored at a server (e.g., in adatabase or like data store) for later retrieval and decoding. Forexample, the encoded image 504 may be an image hosted on a website or animage provided for display on a webpage.

FIG. 6 is a block diagram of an example of an image decoder 600. Theimage decoder 600 may, for example, be an image decoder implemented at areceiving station of an image coding system, such as the receivingstation 104 of the image coding system 100 shown in FIG. 1. The imagedecoder 600 receives and decodes an encoded image 602 (e.g., fromstorage or memory) to produce an output image 604, which may be outputfor display or storage. The output image 604 is perceptibly the same asor similar to an input image encoded using an encoder (e.g., the inputimage 502 and the image encoder 500 shown in FIG. 3). However, giventhat the encoding resulting in the encoded image 602 may be lossy, theoutput image 604 may look substantially the same as, but not necessarilybe identical to, the input image.

The image decoder 600 includes an entropy decoding stage 606, adequantization stage 608, an inverse transform stage 610, and afiltering stage 612. The entropy decoding stage 606 entropy decodesencoded image data from the encoded image 602 using a lossless codingtechnique. For example, the lossless coding technique used by theentropy decoding stage 606 to entropy decode the encoded image data fromthe encoded image 602 may be or include Huffman coding, arithmeticdoing, variable length coding, or another coding technique.

The entropy decoding stage 606 entropy decodes the encoded image data toproduce quantized transform coefficients. The dequantization stage 608dequantizes the quantized transform coefficients output from the entropydecoding stage 606, such as by multiplying the quantized transformcoefficients by a quantization factor used to produce the encoded image602. The inverse transform stage 610 inverse transforms the dequantizedtransform coefficients, such as by inverse transforming the dequantizedtransform coefficients from the frequency domain to the spatial domain.

The filtering stage 612 performs filtering to remove artifacts resultingfrom the encoding of the encoded image 602. For example, the filteringstage 612 can filter the coefficients output from the inverse transformstage 610 for a block of the encoded image 602 according to a mainfiltering direction of the block.

FIG. 7 is a block diagram of an example of a video encoder 700. Theencoder 700 can be implemented, as described above, in the transmittingstation 102, such as by providing a computer software program stored inmemory, for example, the memory 204. The computer software program caninclude machine instructions that, when executed by a processor such asthe processor 202, cause the transmitting station 102 to encode videodata in the manner described in FIG. 7. The encoder 700 can also beimplemented as specialized hardware included in, for example, thetransmitting station 102. In some implementations, the encoder 700 maybe a hardware encoder.

The encoder 700 has the following stages to perform the variousfunctions in a forward path (shown by the solid connection lines) toproduce an encoded or compressed bitstream 702 using an input videostream 704 (e.g., the video stream 400 shown in FIG. 4) as input: anintra/inter prediction stage 706, a transform stage 708, a quantizationstage 710, and an entropy encoding stage 712. The encoder 700 may alsoinclude a reconstruction path (shown by the dotted connection lines) toreconstruct a frame for encoding of future blocks. In FIG. 7, theencoder 700 has the following stages to perform the various functions inthe reconstruction path: a dequantization stage 714, an inversetransform stage 716, a reconstruction stage 718, and a loop filteringstage 720. Other structural variations of the encoder 700 can be used toencode the video stream 300.

When the input video stream 704 is presented for encoding, respectiveadjacent frames can be processed in units of blocks. At the intra/interprediction stage 706, respective blocks can be encoded using intra-frameprediction (also called intra-prediction) or inter-frame prediction(also called inter-prediction). In either case, a prediction block canbe formed. In the case of intra-prediction, a prediction block may beformed from samples in the current frame that have been previouslyencoded and reconstructed. In the case of inter-prediction, a predictionblock may be formed from samples in one or more previously constructedreference frames.

Next, the prediction block can be subtracted from the current block atthe intra/inter prediction stage 706 to produce a residual block (alsocalled a residual). The transform stage 708 transforms the residual intotransform coefficients in, for example, the frequency domain usingblock-based transforms. The quantization stage 710 converts thetransform coefficients into discrete quantum values, which are referredto as quantized transform coefficients, using a quantizer value or aquantization level. For example, the transform coefficients may bedivided by the quantizer value and truncated.

The quantized transform coefficients are then entropy encoded by theentropy encoding stage 712. The entropy-encoded coefficients, togetherwith other information used to decode the block (which may include, forexample, syntax elements such as used to indicate the type of predictionused, transform type, motion vectors, a quantizer value, or the like),are then output to the compressed bitstream 702. The compressedbitstream 702 can be formatted using various techniques, such asvariable length coding (VLC) or arithmetic coding. The compressedbitstream 702 can also be referred to as an encoded video stream orencoded video bitstream, and the terms will be used interchangeablyherein.

The reconstruction path (shown by the dotted connection lines) can beused to ensure that the encoder 700 and a decoder (e.g., the decoder 800described below with respect to FIG. 8) use the same reference frames todecode the compressed bitstream 420. The reconstruction path performsfunctions that are similar to functions that take place during thedecoding process (described below with respect to FIG. 8), includingdequantizing the quantized transform coefficients at the dequantizationstage 714 and inverse transforming the dequantized transformcoefficients at the inverse transform stage 716 to produce a derivativeresidual block (also called a derivative residual).

At the reconstruction stage 718, the prediction block that was predictedat the intra/inter prediction stage 706 can be added to the derivativeresidual to create a reconstructed block. The loop filtering stage 720can be applied to the reconstructed block to reduce distortion such asblocking artifacts. In some implementations, the loop filtering stage720 can be replaced with another filtering stage.

Other variations of the encoder 700 can be used to encode the compressedbitstream 702. In some implementations, a non-transform based encodercan quantize the residual signal directly without the transform stage708 for certain blocks or frames. In some implementations, an encodercan have the quantization stage 710 and the dequantization stage 714combined in a common stage.

FIG. 8 is a block diagram of an example of a video decoder 800. Thedecoder 800 can be implemented in the receiving station 106, forexample, by providing a computer software program stored in the memory204. The computer software program can include machine instructionsthat, when executed by a processor such as the processor 202, cause thereceiving station 106 to decode video data in the manner described inFIG. 8. The decoder 800 can also be implemented in hardware included in,for example, the transmitting station 102 or the receiving station 106.

The decoder 800, similar to the reconstruction path of the encoder 700shown in FIG. 7, includes in one example the following stages to performvarious functions to produce an output video stream 802 from thecompressed bitstream 804 (e.g., the compressed bitstream 702 shown inFIG. 7): an entropy decoding stage 806, a dequantization stage 808, aninverse transform stage 810, an intra/inter prediction stage 812, areconstruction stage 814, a loop filtering stage 816, and a deblockingfiltering stage 818. Other structural variations of the decoder 800 canbe used to decode the compressed bitstream 804.

When the compressed bitstream 804 is presented for decoding, the dataelements within the compressed bitstream 804 can be decoded by theentropy decoding stage 806 to produce a set of quantized transformcoefficients. The dequantization stage 808 dequantizes the quantizedtransform coefficients (e.g., by multiplying the quantized transformcoefficients by the quantizer value), and the inverse transform stage810 inverse transforms the dequantized transform coefficients to producea derivative residual that can be identical to that created by theinverse transform stage 716 in the encoder 700. Using header informationdecoded from the compressed bitstream 804, the decoder 800 can use theintra/inter prediction stage 812 to create the same prediction block aswas created in the encoder 700 (e.g., at the intra/inter predictionstage 706).

At the reconstruction stage 814, the prediction block can be added tothe derivative residual to create a reconstructed block. The loopfiltering stage 816 can be applied to the reconstructed block to reduceblocking artifacts. In some implementations, the loop filtering stage816 can be replaced with another filtering stage. Other filtering canalso be applied to the reconstructed block. For example, the deblockingfiltering stage 818 can be applied to the reconstructed block to reduceblocking distortion, and the result is output as the output video stream802. The output video stream 802 can also be referred to as a decodedvideo stream, and the terms will be used interchangeably herein.

Other variations of the decoder 800 can be used to decode the compressedbitstream 804. In some implementations, the decoder 800 can produce theoutput video stream 802 without the deblocking filtering stage 818.

FIG. 9 is an illustration of examples of portions of an image or videoframe 900. As shown, the image or video frame 900 includes four 64×64blocks 910, in two rows and two columns in a matrix or Cartesian plane.In some implementations, a 64×64 block may be a maximum coding unit,N=64. Each 64×64 block may include four 32×32 blocks 920. Each 32×32block may include four 16×16 blocks 930. Each 16×16 block may includefour 8×8 blocks 940. Each 8×8 block 940 may include four 4×4 blocks 950.Each 4×4 block 950 may include 16 pixels, which may be represented infour rows and four columns in each respective block in the Cartesianplane or matrix.

The pixels may include information representing an image captured in theimage or video frame 900, such as luminance information, colorinformation, and location information. In some implementations, a block,such as a 16×16 pixel block as shown, may include a luminance block 960,which may include luminance pixels 562; and two chrominance blocks 970,980, such as a U or Cb chrominance block 970, and a V or Cr chrominanceblock 980. The chrominance blocks 970, 980 may include chrominancepixels 990. For example, the luminance block 960 may include 16×16luminance pixels 962 and each chrominance block 970, 980 may include 8×8chrominance pixels 990 as shown. Although one arrangement of blocks isshown, any arrangement may be used. Although FIG. 9 shows N×N blocks, insome implementations, N×M blocks may be used, wherein N and M aredifferent numbers. For example, 32×64 blocks, 64×32 blocks, 16×32blocks, 32×16 blocks, or any other size blocks may be used. In someimplementations, N×2N blocks, 2N×N blocks, or a combination thereof, maybe used.

In some implementations, coding the image or video frame 900 may includeordered block-level coding. Ordered block-level coding may includecoding blocks of the image or video frame 900 in an order, such asraster-scan order, wherein blocks may be identified and processedstarting with a block in the upper left corner of the image or videoframe 900, or portion of the image or video frame 900, and proceedingalong rows from left to right and from the top row to the bottom row,identifying each block in turn for processing. For example, the 64×64block in the top row and left column of the image or video frame 900 maybe the first block coded and the 64×64 block immediately to the right ofthe first block may be the second block coded. The second row from thetop may be the second row coded, such that the 64×64 block in the leftcolumn of the second row may be coded after the 64×64 block in therightmost column of the first row.

In some implementations, coding a block of the image or video frame 900may include using quad-tree coding, which may include coding smallerblock units within a block in raster-scan order. For example, the 64×64block shown in the bottom left corner of the portion of the image orvideo frame 900 may be coded using quad-tree coding wherein the top left32×32 block may be coded, then the top right 32×32 block may be coded,then the bottom left 32×32 block may be coded, and then the bottom right32×32 block may be coded. Each 32×32 block may be coded using quad-treecoding wherein the top left 16×16 block may be coded, then the top right16×16 block may be coded, then the bottom left 16×16 block may be coded,and then the bottom right 16×16 block may be coded.

Each 16×16 block may be coded using quad-tree coding wherein the topleft 8×8 block may be coded, then the top right 8×8 block may be coded,then the bottom left 8×8 block may be coded, and then the bottom right8×8 block may be coded. Each 8×8 block may be coded using quad-treecoding wherein the top left 4×4 block may be coded, then the top right4×4 block may be coded, then the bottom left 4×4 block may be coded, andthen the bottom right 4×4 block may be coded. In some implementations,8×8 blocks may be omitted for a 16×16 block, and the 16×16 block may becoded using quad-tree coding wherein the top left 4×4 block may becoded, then the other 4×4 blocks in the 16×16 block may be coded inraster-scan order.

In some implementations, coding the image or video frame 900 may includeencoding the information included in the original version of the imageor video frame by, for example, omitting some of the information fromthat original version of the image or video frame from a correspondingencoded image or encoded video frame. For example, the coding mayinclude reducing spectral redundancy, reducing spatial redundancy, or acombination thereof.

Reducing spectral redundancy may include using a color model based on aluminance component (Y) and two chrominance components (U and V or Cband Cr), which may be referred to as the YUV or YCbCr color model, orcolor space. Using the YUV color model may include using a relativelylarge amount of information to represent the luminance component of aportion of the image or video frame 900, and using a relatively smallamount of information to represent each corresponding chrominancecomponent for the portion of the image or video frame 900. For example,a portion of the image or video frame 900 may be represented by ahigh-resolution luminance component, which may include a 16×16 block ofpixels, and by two lower resolution chrominance components, each ofwhich represents the portion of the image as an 8×8 block of pixels. Apixel may indicate a value, for example, a value in the range from 0 to255, and may be stored or transmitted using, for example, eight bits.Although this disclosure is described in reference to the YUV colormodel, another color model may be used.

Reducing spatial redundancy may include transforming a block into thefrequency domain using, for example, a discrete cosine transform. Forexample, a unit of an encoder, such as the transform stage 506 shown inFIG. 5 or the transform stage 708 shown in FIG. 7, may perform adiscrete cosine transform using transform coefficient values based onspatial frequency.

Although described herein with reference to matrix or Cartesianrepresentation of the image or video frame 900 for clarity, the image orvideo frame 900 may be stored, transmitted, processed, or a combinationthereof, in a data structure such that pixel values may be efficientlyrepresented for the image or video frame 900. For example, the image orvideo frame 900 may be stored, transmitted, processed, or anycombination thereof, in a two-dimensional data structure such as amatrix as shown, or in a one-dimensional data structure, such as avector array.

Furthermore, although described herein as showing a chrominancesubsampled image where U and V have half the resolution of Y, the imageor video frame 900 may have different configurations for the colorchannels thereof. For example, referring still to the YUV color space,full resolution may be used for all color channels of the image or videoframe 900. In another example, a color space other than the YUV colorspace may be used to represent the resolution of color channels of theimage or video frame 900.

Example illustrations of a boundary of non-zero coefficients used forsparse matrix representation of an image or video block are nowdescribed with respect to FIGS. 10-11. Sparse matrix representationusing a boundary of non-zero coefficients refers to image or videocoding using a bounding box which indicates or otherwise representsnon-zero value coefficients within a block of an image or a video frame.At an encoder, the non-zero value coefficients enclosed by the boundingbox are encoded within an encoded bitstream. The remaining coefficientsare zero value coefficients outside of the bounding box and are notspecifically encoded within the encoded bitstream. For example, theremaining coefficients may be represented in the encoded bitstream by arun of zero values. In another example, the remaining coefficients maybe entirely omitted from the encoded bitstream. Dimensional informationindicating a shape, size, and/or location of the bounding box withrespect to coefficients of the subject block is also encoded within theencoded bitstream. For example, the dimensional information may beencoded to a block header of the subject block. Later, at a decoder, theencoded non-zero value coefficients are decoded from the encodedbitstream. The decoder uses the dimensional information to determine thecoefficients on which to spend computing resources, such as becausethose coefficients are enclosed by the bounding box and thus includenon-zero value coefficients. The decoder determines that the remainingcoefficients of the block are zero value coefficients. The decoder maydetermine that the remaining coefficients are zero value coefficientsindependent of data encoded within the encoded bitstream or based ondata encoded within the encoded bitstream.

Referring first to FIG. 10, a block 1000 is shown. The block 1000 may bea block of an image (e.g., the image 300 shown in FIG. 3) or of a videoframe (e.g., the video frame 406 shown in FIG. 4). The block 1000includes coefficients 1002 which are enclosed by a bounding boxindicated by boundary 1004 and coefficients 1006 which are outside ofthe boundary 1004 and thus outside of the bounding box. The block 1000may therefore be considered as a two-dimensional matrix of coefficients.The coefficients 1002 include non-zero value coefficients and may insome cases also include zero value coefficients. The coefficients 1006are limited to zero value coefficients. A symbol 1008 represents some ofthe coefficients 1006 which are outside of the bounding box.

Coding the block 1000 includes encoding and subsequently decoding thecoefficients 1002 since they are enclosed by the bounding box. However,the coefficients 1006 are not encoded and subsequently decoded sincethey are outside of the bounding box. For example, a run of zero valuescan instead be encoded to and subsequently decoded from an encodedbitstream to indicate the number of the coefficients 1006 in the block1000.

Dimensional information for the bounding box is included within theencoded bitstream. For example, the dimensional information may be,include, or otherwise refer to information indicating a shape of thebounding box, such as based on the portion of the two-dimensional matrixcorresponding to the block 1000 over which the bounding box is located.In another example, the dimensional information may be, include, orotherwise refer to information indicating one or more dimensions of thebounding box. For example, information indicating the one or moredimensions can indicate one or more of a width or a height of thebounding box. In some cases, such as where the bounding box isnon-rectangular, the information indicating the one or more dimensionscan indicate multiple widths and/or multiple heights, such as toindicate dimensional changes throughout the shape of the bounding box.In yet another example, the dimensional information may be, include, orotherwise refer to information indicating a location of the bounding boxwithin the block. For example, the information indicating the locationof the bounding box may by default indicate that the bounding box startsat a top-left most position of the two-dimensional matrix representationcorresponding to the block. In another example, the informationindicating the location of the bounding box may indicate that thebounding box starts and/or ends at other places within the block. Insome implementations, the dimensional information for the bounding boxmay be, include, or otherwise refer to information indicating acombination of a shape of the bounding box, one or more dimensions ofthe bounding box, and/or a location of the bounding box within theblock.

The dimensional information may correspond to coordinates withintwo-dimensional matrix representation of the block, for example, along Xand Y axes. In some implementations, the dimensional informationincluded within the encoded bitstream indicates the complete size,shape, and/or location of the bounding block. In some implementations,the dimensional information included within the encoded bitstreamindicates a partial size, shape, and/or location of the bounding block.

In some implementations, the dimensional information included within theencoded bitstream may be represented using coded syntax element values.For example, a set of coded syntax element values may be defined for ashape (e.g., rectangle, rhombus, circle, triangle, or another geometricstructure), in which case the encoding of that set of coded syntaxelement values indicates a bounding box of the defined shape to thedecoder. In another example, a set of syntax element values may bedefined for a height and/or a width, in which case the encoding of thatset of coded syntax element values indicates the height and/or width ofthe bounding box to the decoder. In yet another example, a set of codedsyntax may be defined for a starting and/or ending location within ablock, in which case the encoding of that set of coded syntax elementvalues indicates the starting and/or ending location of the bounding boxwithin the block to the decoder. In some implementations, a syntaxelement such as a binary flag can be used to signal whether a boundingbox is used. In some such implementations, a decoder may check the valueof that flag before proceeding to process a corresponding encoded blockusing a bounding box.

In some implementations, dimensional information for the bounding boxmay be omitted from the encoded bitstream. In some such implementations,the decoder which later decodes the encoded block corresponding to thebounding box may rely upon default configurations or determine orotherwise identify the bounding box with respect to the coefficients ofthe encoded block. For example, the default configurations may indicatethat the bounding box has a height equal to a height of the encodedblock. In another example, the default configurations may indicate thatthe bounding box has a width equal to a width of the encoded block. Inyet another example, the default configurations may indicate to identifya height and/or a width of the bounding box based on an X-Y position ofa last non-zero value coefficient within the encoded block.

In some implementations, an adaptive bit can be included in thebitstream for some or all of the coefficients 1002 and/or for some orall of the coefficients 1006 to indicate whether such coefficients areenclosed within the bounding box associated with the boundary 1004. Forexample, the adaptive bit can be a binary random variable havingprobabilities which are updated with each occurrence of zero valuecoefficients and/or non-zero value coefficients. In someimplementations, adaptive bits can be used to indicate a run of zerovalues for the coefficients 1006. For example, if fewer than fiveconsecutive zero value coefficients 1006 are present, the adaptive bitscan be used to indicate those coefficients 1006. However, if five tosixteen consecutive zero value coefficients 1006 are present, the numberof zeros can be encoded using a syntax element within the image or videoframe header corresponding to the block 1000. Further, if more thansixteen consecutive zero value coefficients 1006 are present, those zerovalue coefficients 1006 may be entropy encoded using, for example, aGolomb representation.

Referring next to FIG. 11, the block 1000 is again shown with symbols1100 and symbols 1102. The symbols 1100 represent locations along a scanorder pattern (e.g., the zig zag pattern as shown in FIGS. 10-11) inwhich the pattern has crossed into both sides of the boundary 1004. Thesymbols 1100 are used to indicate EOB locations for the coefficientsenclosed within the bounding box corresponding to the boundary 1004. Thesymbols 1102 represent locations along the scan order pattern afterwhich all coefficients are non-zero value coefficients. The symbols 1100and the symbols 1102 can be included in an encoded bitstream to whichthe block 1000 is encoded, along with the locations thereof.

In some implementations, the bounding box used in connection with theencoding of the block 1000 may enclose information other thancoefficients. For example, the bounding box may be used during encodingto enclose other numerical information representative of image or videodata. In some such implementations, such as where the numericalinformation enclosed using the bounding box is produced beforeprocessing the information using a scan order, other iterations may beperformed to identify the bounding box. For example, the otheriterations may perform the same or similar operations to scan orderprocessing, such as described below with respect to FIG. 12.

Techniques for sparse matrix representation using a boundary of non-zerocoefficients are now described with respect to FIGS. 12-13. FIG. 12 is aflowchart diagram of an example of a technique 1200 for encoding animage or video block using sparse matrix representation using a boundaryof non-zero coefficients. FIG. 13 is a flowchart diagram of an exampleof a technique 1300 for decoding an encoded image or video block usingsparse matrix representation using a boundary of non-zero coefficients.

One or more of the technique 1200 or the technique 1300 can beimplemented, for example, as a software program that may be executed bycomputing devices such as the transmitting station 102 or the receivingstation 104. For example, the software program can includemachine-readable instructions that may be stored in a memory such as thememory 204 or the secondary storage 214, and that, when executed by aprocessor, such as the processor 202, may cause the computing device toperform one or more of the technique 1200 or the technique 1300. One ormore of the technique 1200 or the technique 1300 can be implementedusing specialized hardware or firmware. As explained above, somecomputing devices may have multiple memories or processors, and theoperations described in one or more of the technique 1200 or thetechnique 1300 can be distributed using multiple processors, memories,or both.

For simplicity of explanation, the technique 1200 and the technique 1300are each depicted and described as a series of steps or operations.However, the steps or operations in accordance with this disclosure canoccur in various orders and/or concurrently. Additionally, other stepsor operations not presented and described herein may be used.Furthermore, not all illustrated steps or operations may be required toimplement a technique in accordance with the disclosed subject matter.

Referring first to FIG. 12, a flowchart diagram of the example of thetechnique 1200 for encoding a current block (e.g., an image block of animage being encoded, or a video block of a video frame being encoded)using sparse matrix representation using a boundary of non-zerocoefficients is shown. At 1202, pixel values are transformed to producecoefficients. The pixel values may be pixel values before or afterprediction is performed. As such, in some cases, the pixel values may beor otherwise refer to values of a prediction residual.

At 1204, the coefficients are quantized to produce quantized transformcoefficients. The quantized transform coefficients are arranged in atwo-dimensional matrix representation. For example, the two-dimensionalmatrix may include or otherwise be expressed as a transform blockcorresponding to the current block. In some implementations, thetwo-dimensional matrix may include or otherwise be expressed as multipletransform blocks.

At 1206, a bounding box used to enclose non-zero value coefficients ofthe quantized transform coefficients is identified. Identifying thebounding box can include locating the non-zero value coefficients alonga scan order. There may be a number of scan orders available forscanning the quantized transform coefficients. For example, a scan ordermay scan the quantized transform coefficients on a row-by-row basisstarting at the top of a transform block corresponding to the currentblock (e.g., raster or horizontal scan) or on a column-by-column basisstarting at the left side of such a transform block (e.g., verticalscan). In another example, the scan order may process the coefficientsin directions that are not exactly horizontal or vertical (e.g.,diagonal scan, zig-zag scan, etc.).

Whereas typical scan order processing converts the two-dimensionalmatrix of the quantized transform coefficients into a one-dimensionalsequence by iterating through coefficients in a particular order, set bythe pattern of the scan order used, the scan order processing used toidentify the bounding box includes iterating through the quantizedtransform coefficients to identify the non-zero coefficients of thecurrent block. For example, the locations of the non-zero coefficientscan be identified within the current block. In some implementations, anend of block flag indicating a location of a last non-zero coefficientalong the scan order pattern may also be identified.

The bounding box is identified according to the non-zero coefficients.As such, dimensional information of the bounding box, which represents ashape of the bounding box, a size of the bounding box, and/or a positionof the bounding box within the two-dimensional matrix representationcorresponding to the current block, is determined according to thelocations of the non-zero value coefficients within the two-dimensionalmatrix representation of the current block. For example, the locationsof the non-zero coefficients within the current block as identifiedalong the scan order indicate the boundaries of the bounding box, inwhich each of the non-zero coefficients is enclosed within the boundingbox. In some cases, the bounding box will enclose only non-zero valuecoefficients. In other cases, the bounding box will enclose bothnon-zero value coefficients and one or more zero value coefficients.

The size of the bounding box is considered. A smaller bounding boxgenerally will result in a better compression performance than a largerbounding box, such as because the smaller bounding box encloses a lowertotal number of coefficients than the larger bounding box. As such,where it is possible to exclude zero value coefficients from enclosurewithin the bounding box, such that the resulting bounding box will besmaller than it would be had it included those zero value coefficients,the boundaries of the bounding box will be arranged to effectuate suchexclusion.

At 1208, the non-zero value coefficients enclosed within the boundingbox are entropy encoded to an encoded bitstream. Entropy encoding thenon-zero value coefficients to the encoded bitstream includes processingthe non-zero value coefficients enclosed within the bounding boxaccording to their order in the scan order pattern. For example, afterthe operations for identifying the bounding box are performed, the scanorder is used to convert the two-dimensional matrix of quantizedtransform coefficients of the current block into a one-dimensionalsequence. In another example, the scan order can be used to convert thetwo-dimensional matrix of quantized transform coefficients of thecurrent block into a one-dimensional sequence during the performance ofthe operations for identifying the bounding box.

As part of the entropy encoding, zero value coefficients enclosed withinthe bounding box are also encoded to the bitstream. However, zero valuecoefficients not enclosed within the bitstream are not specificallyentropy encoded to the bitstream. In some implementations, zero valuecoefficients not enclosed within the bitstream are skipped altogethersuch that the information encoded to the bitstream is limited to thecoefficients enclosed within the bounding box and information usable bya decoder to identify the bounding box (e.g., the dimensionalinformation described below). In some implementations, an adaptive bit,a syntax element, or a Golomb representation may be used to indicate arun of zero value coefficients within the bitstream, such as based on asize of the run of zero value coefficients. For example, a decoder canuse the data indicating the run of zero value coefficients toreconstruct the current block by populating zero value coefficients inspecific locations based on the data used to indicate run of zero valuecoefficients within the bitstream.

At 1210, the dimensional information of the bounding box is encodedwithin the encoded bitstream. Encoding the dimensional informationwithin the encoded bitstream can include encoding the dimensionalinformation, for example, to a block header for the current block, animage or video frame header of the image or video frame which includesthe current block, or another portion of the bitstream. The dimensionalinformation is encoded within the bitstream to indicate to a decoderwhich later receives the bitstream how to identify the bounding box fordecoding the current block.

The operations for encoding the non-zero value coefficients enclosedwithin the bounding box to the bitstream and for encoding thedimensional information within the bitstream are described with respectto the technique 1200 as being separate operations. However, in someimplementations, the operations for encoding the non-zero valuecoefficients enclosed within the bounding box to the bitstream and forencoding the dimensional information within the bitstream can becombined. For example, a single encoding operation may be performed toencode the non-zero value coefficients and the dimensional informationto the bitstream.

In some implementations, the technique 1200 may include encoding asyntax element indicating whether a bounding box was used for encodingthe block to the bitstream. For example, the syntax element may be abinary flag. The binary flag may be included in a block header for theblock being encoded, an image or video frame header for the image orvideo frame which includes the block being encoded, or another portionof the bitstream.

In some implementations, the quantized transform coefficients of thecurrent block can be processed against each of multiple candidate scanorders to identify the scan order to use for identifying the boundingbox. For example, it may be the case that different candidate scanorders may result in a different shape, size, and/or location within thecurrent block of the bounding box. Accordingly, it follows thatdifferent candidate scan orders may result in a different total numberof coefficients (both non-zero value and zero value) which are enclosedby the resulting bounding boxes. The scan order to use for identifyingthe bounding box is thus identified based on groupings of the non-zerovalue coefficients within a two-dimensional matrix representationcorresponding to the current block. Further, the scan order ultimatelyidentified for use in identifying the bounding box is identified as thecandidate scan order resulting in a tightest grouping of the non-zerovalue coefficients. The shape and size of the bounding box may thus bebased on the arrangement of the non-zero value coefficients according tothat tightest grouping thereof.

In some such implementations, processing the quantized transformcoefficients of the current block against the multiple candidate scanorders can include, for each of the candidate scan orders, identifying acandidate bounding box using that candidate scan order and determining atotal number of coefficients enclosed within the candidate bounding box.The candidate bounding box having a lowest one of the total numbers ofcoefficients may then be selected or otherwise identified as thebounding box for the current block.

In some such implementations, processing the quantized transformcoefficients of the current block against the multiple candidate scanorders can include identifying a candidate bounding box using a firstcandidate scan order and determining a total number of coefficientsenclosed within the candidate bounding box. The candidate bounding boxitself or indication representative or otherwise indicative of thecandidate bounding box may then be stored as the pending best candidatebounding box. The remaining candidate scan orders are then iteratedagainst individually. For each new bounding box identified during thisprocess, a determination can be made as to whether the new bounding boxencloses a lower total number of coefficients than the currently storedbounding box. Where the new bounding box does enclose such a lower totalnumber of coefficients, the currently stored bounding box may be evictedfrom storage and replaced with the new bounding box. Where the newbounding box does not enclose such a lower total number of coefficients,the new bounding box may be discarded. This process may repeat untileach of the available candidate scan orders has been iterated through,and the bounding box stored at the end of the process may then beselected or otherwise identified as the bounding box for the currentblock.

In some implementations, identifying the bounding box may include usinga reference bounding box previously identified for a previously encodedblock or image or video frame. For example, the reference bounding boxmay be a bounding box previously identified for a neighbor block of thecurrent block being encoded. In another example, the reference boundingbox may be a bounding box of a collocated block within a reference imageor reference video frame, such as a reference image or reference videoframe used for inter-prediction of the current block or for anotherblock included in the same image or video frame as the current block. Insome implementations, using the reference bounding box may includeencoding a differential to the bitstream, in which the differentialsignals to the decoder how to use the reference bounding box torepresent a bounding box for the current block. In some implementations,the reference bounding box itself is signaled within the bitstream. Insome implementations, the differential and the reference bounding boxare both signaled within the bitstream.

In some implementations, there may be multiple reference bounding boxesavailable for use during the encoding of the current block. In some suchimplementations, a buffer may be used to store data corresponding to oneor more reference bounding boxes. For example, reference bounding boxesmay be stored for some or all reference frames stored in a referenceframe buffer available for encoding the current block. In anotherexample, reference bounding boxes may be stored for some or all neighborblocks of the current block. In yet another example, reference boundingboxes may be stored for some or all reference frames and for some or allneighbor blocks.

In some implementations in which multiple reference bounding boxes areavailable for use during the encoding of the current block, identifyingthe bounding box for use with the current block may include iteratingthrough some or all of the multiple reference bounding boxes to identifyan optimal one of the reference bounding boxes to use for encoding thecurrent block. For example, the current block can be iterated through(e.g., using scan order processing or another processing for scanningthrough the coefficients thereof) to identify the non-zero coefficientsof the current block within some or all of the multiple referencebounding boxes. The reference bounding box which encloses each of thenon-zero value coefficients of the current block and a lowest totalnumber of coefficients of the current block can then be selected orotherwise identified as the bounding box for use with the current block.

In some implementations, identifying the bounding box for use with thecurrent block may include identifying the bounding box other than byusing a scan order. For example, the bounding box may be identified byiterating through different bounding box candidates defined for use withthe encoder, rather than identified from encoding previous blocks. Forexample, one or more bounding box candidates of different sizes, shapes,and/or positions within the current block may be processed against thequantized transform coefficients of the current block. For example, abounding box candidate may enclose the top-left-most M×N block of thequantized transform coefficients. In such a case, M and N are each lessthan a total width or height of the current block. In some such cases,the values of M and N may be different. Other examples based on size,shape, and/or position are possible.

In some such implementations, processing the quantized transformcoefficients of the current block against the bounding box candidatescan include, for each of the bounding box candidates, determining atotal number of coefficients enclosed within the candidate bounding box.The bounding box candidate having a lowest one of the total numbers ofcoefficients may then be selected or otherwise identified as thebounding box for the current block. In some such implementations, in theevent that two or more of the bounding box candidates share the lowesttotal number of coefficients, other criteria may be used to select orotherwise identify one of those bounding box candidates as the boundingbox for use with the current block. For example, the bounding boxcandidate having the smaller size and/or the bounding box candidatelocated most closely to a DC coefficient of the current block may beselected or otherwise identified as the bounding box for the currentblock. In some such implementations, the first bounding box candidate tomeet a threshold score may be selected or otherwise identified as thebounding box for use with the current block. For example, the thresholdscore may correspond to or otherwise be based on a compressionthroughput goal, a maximum total number of coefficients which may beenclosed within a bounding box, and/or other criteria.

In some such implementations, processing the quantized transformcoefficients of the current block against the bounding box candidatescan include using machine learning. For example, a machine learningmodel can be trained to identify an optimal size, shape, and/or positionof the two-dimensional matrix representation corresponding to thebounding box, such as by analyzing a number of bounding boxes identifiedfor previously encoded blocks.

In some implementations, identifying the bounding box for use with thecurrent block may include determining whether to use a referencebounding box in connection with the encoding of the current block. Forexample, determining whether to use a reference bounding box inconnection with the encoding of the current block may includedetermining an amount of motion within the current block. For example,where the amount of motion meets a threshold, it may indicate that toomuch information about the reference block from which the referencebounding box would be used is different from the information about thecurrent block. In such a case, the reference bounding box may not beused. The reference bounding box may be a lone reference bounding boxavailable for use during the encoding of the current block.Alternatively, the reference bounding box may be one of multiplereference bounding boxes available for use during the encoding of thecurrent block.

Referring next to FIG. 13, a flowchart diagram of the example of thetechnique 1300 for decoding an encoded image or video block using sparsematrix representation using a boundary of non-zero coefficients isshown. At 1302, dimensional information of a bounding box is decodedfrom an encoded bitstream.

At 1304, syntax elements representative of non-zero value coefficientsencoded to the encoded bitstream are decoded from the encoded bitstreamusing the dimensional information. For example, using the dimensionalinformation to decode the syntax elements can include using thedimensional information to determine locations of the non-zero valuecoefficients within the block being decoded.

At 1306, the syntax elements are dequantized to produce transformcoefficients. The transform coefficients are arranged in atwo-dimensional matrix corresponding to the block being decoded.

At 1308, the transform coefficients are inverse transformed to producedecoded pixel data. The decoded pixel data may be, include, or otherwiserefer to pixel values of before or after the reconstruction of aprediction residual, if a prediction residual is involved in thedecoding.

At 1310, the decoded pixel data is output for storage or display. Forexample, outputting the decoded pixel data for storage or display caninclude rendering the decoded pixel data as an image within a web page.In another example, outputting the decoded pixel data for storage ordisplay can include outputting an output video stream including thedecoded pixel data to a device for playing the video stream.

In some implementations, the technique 1300 may include decoding asyntax element indicating whether a bounding box was used for encodingthe encoded block from the bitstream. For example, the syntax elementmay be a binary flag. The binary flag may be included in a block headerfor the block being encoded, an image or video frame header for theimage or video frame which includes the block being encoded, or anotherportion of the bitstream. In some such implementations, the value of thesyntax element indicating whether the bounding box was used may bechecked as a pre-processing step, such as before other operationsdescribed with respect to the technique 1300 are performed. For example,responsive to a determination that the syntax element indicates that thebounding box was not used for encoding the encoded block, someoperations described with respect to the technique 1300 may be skipped.In some such implementations, responsive to a determination that thesyntax element indicates that the bounding box was not used for encodingthe encoded block, the operations for decoding syntax elementsrepresentative of dimensional information and/or the operations forusing the dimensional information for decoding the encoded block may beskipped.

The aspects of encoding and decoding described above illustrate someexamples of encoding and decoding techniques and hardware componentsconfigured to perform all or a portion of those examples of encodingand/or decoding techniques. However, it is to be understood thatencoding and decoding, as those terms are used in the claims, could meanencoding, decoding, transforming, or another processing or changing ofdata.

The word “example” is used herein to mean serving as an example,instance, or illustration. Any aspect or design described herein as“example” is not necessarily to be construed as being preferred oradvantageous over other aspects or designs. Rather, use of the word“example” is intended to present concepts in a concrete fashion. As usedin this application, the term “or” is intended to mean an inclusive “or”rather than an exclusive “or.” That is, unless specified otherwise orclearly indicated otherwise by the context, the statement “X includes Aor B” is intended to mean any of the natural inclusive permutationsthereof. That is, if X includes A; X includes B; or X includes both Aand B, then “X includes A or B” is satisfied under any of the foregoinginstances. In addition, the articles “a” and “an” as used in thisapplication and the appended claims should generally be construed tomean “one or more,” unless specified otherwise or clearly indicated bythe context to be directed to a singular form. Moreover, use of the term“an implementation” or the term “one implementation” throughout thisdisclosure is not intended to require the same implementation unlessdescribed as such.

All or a portion of the implementations of this disclosure can take theform of a computer program product accessible from, for example, acomputer-usable or computer-readable medium. A computer-usable orcomputer-readable medium can be any device that can, for example,tangibly contain, store, communicate, or transport the program for useby or in connection with any processor. The medium can be, for example,an electronic, magnetic, optical, electromagnetic, or semiconductordevice. Other suitable mediums are also available.

The above-described implementations, examples, and aspects have beendescribed in order to facilitate easy understanding of this disclosureand do not limit this disclosure. On the contrary, this disclosure isintended to cover various modifications and equivalent arrangementsincluded within the scope of the appended claims, which scope is to beaccorded the broadest interpretation as is permitted under the law so asto encompass all such modifications and equivalent arrangements.

What is claimed is:
 1. A method for decoding an encoded block of imageor video data, the method comprising: decoding dimensional informationof a bounding box of the encoded block from a bitstream; decoding, fromthe bitstream using the dimensional information, syntax elementscorresponding to non-zero value coefficients enclosed within thebounding box, and wherein the syntax elements are arranged other than ina two-dimensional matrix format; dequantizing the syntax elements toproduce transformed data, wherein the transformed data includescoefficients arranged in the two-dimensional matrix format; inversetransforming the transformed data to produce decoded data; andoutputting the decoded data for storage or display.
 2. The method ofclaim 1, wherein decoding the syntax elements comprises: determininglocations of the non-zero coefficients within the encoded block usingthe dimensional information.
 3. The method of claim 1, comprising:decoding, from the bitstream, a syntax element indicating that thebounding box was used for encoding the encoded block.
 4. The method ofclaim 3, wherein the syntax element is decoded from a block headercorresponding to the encoded block.
 5. The method of claim 3, whereinthe syntax element is decoded from an image header or a video frameheader corresponding to an image or a video frame which includes theencoded block.
 6. The method of claim 1, wherein the bounding box isbased on locations of the non-zero coefficients according to a scanorder used to encode the encoded block.
 7. The method of claim 1,wherein the bounding box has a non-rectangular shape.
 8. The method ofclaim 1, wherein at least some zero value coefficients of the encodedblock are external to the bounding box.
 9. The method of claim 1,wherein the dimensional information corresponds to one or both of ashape of the bounding box or a size of the bounding box.
 10. The methodof claim 1, wherein the bounding box only encloses non-zero coefficientsof the encoded block.
 11. A method for decoding an encoded block ofimage or video data, the method comprising: decoding, from a bitstream,dimensional information of a bounding box of the encoded block;decoding, from the bitstream using the dimensional information, syntaxelements including non-zero value coefficients enclosed within thebounding box; producing decoded data by dequantizing and inversetransforming the syntax elements; and outputting the decoded data forstorage or display.
 12. The method of claim 11, wherein all of thenon-zero value coefficients of the encoded block are enclosed within thebounding box and all of the coefficients of the encoded block externalto the bounding box are zero value coefficients.
 13. The method of claim11, wherein the syntax elements are arranged other than in atwo-dimensional matrix format and the decoded data are arranged in thetwo-dimensional matrix format.
 14. The method of claim 11, comprising:determining whether a value of a syntax element encoded to the bitstreamindicates that the bounding box was used for encoding the encoded block;and decoding the dimensional information from the bitstream responsiveto a determination that the value of the syntax element indicates thatthe bounding box was used for encoding the encoded block.
 15. The methodof claim 11, wherein the dimensional information corresponds to one orboth of a shape of the bounding box or a size of the bounding box.
 16. Amethod for decoding an encoded block of image or video data, the methodcomprising: identifying dimensional information of a bounding box of theencoded block; identifying syntax elements corresponding to coefficientsenclosed within the bounding box, wherein the syntax elements arearranged other than in a two-dimensional matrix format; decoding theencoded block to produce decoded data by dequantizing and inversetransforming the syntax elements, wherein the decoded data are arrangedin the two-dimensional matrix format; and outputting the decoded datafor storage or display.
 17. The method of claim 16, wherein all non-zerovalue coefficients of the encoded block are enclosed within the boundingbox and all coefficients of the encoded block external to the boundingbox are zero value coefficients.
 18. The method of claim 16, wherein thedimensional information and the syntax elements are decoded from abitstream which includes the encoded block.
 19. The method of claim 16,wherein the dimensional information is identified based on a value of asyntax element encoded to a bitstream which includes the encoded blockindicating that the bounding box was used for encoding the encodedblock.
 20. The method of claim 16, wherein the bounding box is based onlocations of non-zero coefficients according to a scan order used toencode the encoded block.